
boot.bin: boot.asm
	nasm -f bin boot.asm -o boot.o

boot.img: boot.o
    # yes的作用是重复执行make boot.img时会弹出文件已存在，是否覆盖，会直接输入y信号
	yes | bximage -q -hd=16 -func=create -sectsize=512 -imgmode=flat boot.img
	dd if=boot.o of=boot.img bs=512 count=1 conv=notrunc

.PHONY: clean # PHON依赖，表示，每一次clean都要执行
clean:
	rm -rf *.o
	rm -rf *.bin
	rm -rf *.img
	rm -rf *.img.lock
	rm -rf bochsout.txt

.PHONY: bochs
bochs: boot.img
	bochs -q

.PHONY: usb
usb: boot.bin /dev/sdb
	sudo dd if=/dev/sdb of=usb.img bs=512 count=1 conv=notrunc  # 将USB的分区读出为tmp.bin
	sudo chmod 777 usb.img  # 因为sudo无权限写
	dd if=boot.o of=usb.img bs=446 count=1 conv=notrunc  # 因为主引导扇区不能删除, 最多写446字节
	sudo dd if=usb.img of=/dev/sdb bs=512 count=1 conv=notrunc  # 将usb写好的镜像写回usb存储
	sudo rm usb.img

all:
	make boot.bin
	make boot.img
	make bochs
